import { login, getInfo } from '@/api/user'
import {
  getToken,
  setToken,
  setTokenTime,
  removeToken,
  removeTokenTime
} from '@/utils/auth'
import { Message } from 'element-ui'
import websocket from '@/utils/websocket'
const getDefaultState = () => {
  return {
    token: getToken(),
    user_id: '',
    userInfo: {}
  }
}

const state = getDefaultState()

// 方法
const mutations = {
  // 登录
  SET_TOKEN: (state, token) => {
    state.token = token
    console.log('token', token)
    // console.log(token);
  },
  SET_USERINFO: (state, Obj) => {
    state.userInfo = Obj
  },
  SET_USER_ID: (state, id) => {
    state.user = id
  }
}
// 请求
const actions = {
  // 登录
  async login (ctx, data) {
    // let res = await login(data)
    // console.log(res)
    // 调用mutations里的方法存到state
    // 登录成功后创建websocket连接
    // websocket.Init(res.data)
    ctx.commit('SET_TOKEN', '登录成功')
    setToken('登录成功')
    setTokenTime()
    // ctx.commit('SET_USER_ID')
  },
  // 用户信息
  async getInfo (ctx) {
    let res = await getInfo()
    // console.log(res);
    ctx.commit('SET_USERINFO', res.data)
  },
  // 退出登录
  logout (ctx) {
    // 清空token和时间
    removeToken()
    removeTokenTime()
    console.log('123')
    ctx.commit('SET_TOKEN', '')
    // ctx.commit('SET_USER_ID', '')
    // ctx.commit('SET_USERINFO', {})
    // websocket.onClose()
    Message.success('退出成功，请重新登录')
  }
  //   logout ({ commit, state }) {
  //     return new Promise((resolve, reject) => {
  //       removeToken()
  //       removeTokenTime()
  //       commit('SET_TOKEN', '')
  //       commit('SET_USER_ID', '')
  //       commit('SET_USERINFO', {})
  //       resolve()
  //     })
  //   }
}

export default {
  // 开启私密空间
  namespaced: true,
  state,
  mutations,
  actions
}
